// src/api/scenicSpots.js
// 实际项目中可改为 fetch 或 axios 请求后端
export async function getScenicSpots() {
  // 模拟异步请求
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve([
        { name: '三坊七巷', lat: 26.0857, lng: 119.3028, type: 'historic' },
        { name: '鼓山', lat: 26.0033, lng: 119.3833, type: 'nature' },
        { name: '西湖公园', lat: 26.0933, lng: 119.3083, type: 'park' },
        { name: '福州国家森林公园', lat: 26.1133, lng: 119.2833, type: 'park' },
        { name: '马尾船政文化景区', lat: 26.0333, lng: 119.4500, type: 'cultural' },
        { name: '上下杭', lat: 26.0583, lng: 119.3133, type: 'historic' },
        { name: '烟台山历史风貌区', lat: 26.0483, lng: 119.3233, type: 'cultural' }
      ]);
    }, 300);
  });
}

/**
 * 获取景点详情列表
 * @returns {Promise} 景点详情列表
 */
export async function getScenicSpotDetails() {
  try {
    // 使用相对路径API请求，避免CORS跨域问题
    // 将GET改为POST，因为API返回405错误（方法不允许）
    const response = await fetch('/api/admin/scenicSpot/page', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        // 如果需要认证，可以添加Authorization头
        // 'Authorization': `Bearer ${token}`
      },
      // 对于POST请求，通常需要提供请求体
      body: JSON.stringify({ pageNum: 1, pageSize: 10 }) // 添加分页参数
    });

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    const result = await response.json();

    if (result.code === 200) {
      return result.data.records;
    } else {
      throw new Error(result.msg || '获取景点详情失败');
    }
  } catch (error) {
    console.error('获取景点详情失败:', error);
    // 如果请求失败，返回模拟数据作为后备
    return getMockScenicSpotDetails();
  }
}

/**
 * 获取模拟景点详情数据（当API请求失败时使用）
 * @returns {Array} 模拟景点详情数据
 */
function getMockScenicSpotDetails() {
  return [
    {
      id: 1,
      createTime: "2025-09-23T03:31:11",
      updateTime: "2025-09-23T03:31:11",
      name: "福州三坊七巷",
      description: "福州历史文化街区，保存完好的明清建筑群，被誉为\"明清建筑博物馆\"",
      coverImage: "/images/sanfangqixiang.jpg",
      basePrice: 60,
      bookingNotice: "1. 需提前1天预约\n2. 每人最多预约5张票\n3. 请携带有效身份证件入园\n4. 预约成功后不可修改日期",
      refundPolicy: "1. 游览日期前1天可免费取消\n2. 游览当天取消收取50%手续费\n3. 过期未使用自动作废，不予退款",
      usageGuide: "1. 开放时间：08:00-18:00\n2. 请从南后街主入口入园\n3. 园区内禁止吸烟\n4. 建议游览时间：2-3小时",
      status: "上架"
    },
    {
      id: 2,
      createTime: "2025-09-23T03:31:11",
      updateTime: "2025-09-23T03:31:11",
      name: "鼓山风景区",
      description: "福州著名登山胜地，有千年古刹涌泉寺，可俯瞰福州全景",
      coverImage: "/images/gushan.jpg",
      basePrice: 40,
      bookingNotice: "1. 需提前1天预约\n2. 60岁以上老人半价\n3. 儿童1.2米以下免费\n4. 雨天可能临时关闭",
      refundPolicy: "1. 因天气原因闭园可全额退款\n2. 提前2小时可取消预约\n3. 已检票入园不予退款",
      usageGuide: "1. 开放时间：06:00-17:00\n2. 登山道较陡，请穿运动鞋\n3. 景区内有观光车服务\n4. 建议游览时间：3-4小时",
      status: "上架"
    },
    {
      id: 3,
      createTime: "2025-09-23T03:31:11",
      updateTime: "2025-09-23T03:43:37",
      name: "西湖公园",
      description: "福州古典园林，有1700多年历史，是市民休闲的好去处",
      coverImage: "/images/xihu_park.jpg",
      basePrice: 30,
      bookingNotice: "1. 免费景点仍需预约\n2. 预约名额有限，先到先得\n3. 节假日人流量较大\n4. 团队预约需提前3天",
      refundPolicy: "免费景点，取消预约即可",
      usageGuide: "1. 开放时间：05:00-22:30\n2. 可租借游船\n3. 园区内禁止垂钓\n4. 夜间灯光秀时间：19:00-21:00",
      status: "上架"
    }
  ];
}

/**
 * 获取景点每日价格和库存信息
 * @param {number} scenicId - 景点ID
 * @returns {Promise} 景点每日价格和库存信息列表
 */
export async function getScenicDailyPrices(scenicId) {
  try {
    const response = await fetch('/api/admin/scenicDailyPrice/page', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        // 如果需要认证，可以添加Authorization头
        // 'Authorization': `Bearer ${token}`
      },
      body: JSON.stringify({
        pageNum: 1,
        pageSize: 30, // 获取30天的数据
        scenicId: scenicId // 根据景点ID筛选
      })
    });

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    const result = await response.json();

    if (result.code === 200) {
      return result.data.records;
    } else {
      throw new Error(result.msg || '获取景点每日价格失败');
    }
  } catch (error) {
    console.error('获取景点每日价格失败:', error);
    // 如果请求失败，返回模拟数据作为后备
    return getMockScenicDailyPrices(scenicId);
  }
}

/**
 * 获取模拟景点每日价格数据（当API请求失败时使用）
 * @param {number} scenicId - 景点ID
 * @returns {Array} 模拟景点每日价格数据
 */
function getMockScenicDailyPrices(scenicId) {
  // 生成未来30天的模拟数据
  const today = new Date();
  const mockData = [];

  for (let i = 0; i < 30; i++) {
    const date = new Date(today);
    date.setDate(today.getDate() + i);

    const basePrice = scenicId === 1 ? 60 : scenicId === 2 ? 40 : 30;
    const dayOfWeek = date.getDay();
    // 周末价格稍高
    const weekendMultiplier = (dayOfWeek === 0 || dayOfWeek === 6) ? 1.2 : 1;
    const price = Math.floor(basePrice * weekendMultiplier);
    const stock = Math.floor(Math.random() * 100) + 20;

    mockData.push({
      id: i + 1,
      scenicId: scenicId,
      ticketDate: date.toISOString().split('T')[0], // 格式：YYYY-MM-DD
      price: price,
      stock: stock
    });
  }

  return mockData;
}